| No | 項目 | マクロ例 | 結果 | 記事 |
| 1 |
システム日付 の設定 (年4桁) 詳細16-5 |
Date = #2000/01/01# 〜 Date = #2079/12/31# |
OK |
|
| Date = #2079/01/01# 〜 Date = #2099/12/31# |
実行時エラー |
| ||
| Date = #1900/01/01# 〜 Date = #1979/12/31# |
実行時エラー |
| ||
| Date = #1980/01/01# 〜 Date = #1999/12/31# |
OK |
| ||
| 2 |
システム日付 の設定 (年2桁) 詳細16-5 |
Date = #00/01/01# 〜 Date = #29/12/31# |
OK |
2000〜2029 |
| Date = #30/01/01# 〜 Date = #79/12/31# |
実行時エラー |
| ||
| Date = #80/01/01# 〜 Date = #99/12/31# |
OK |
1980〜1999 | ||
| 3 |
インプットボックス 月/日入力 詳細16-6 |
hia = InputBox("「月/日」入力") hi = CDate(hia) . |
OK |
年はシステム設定の年となる |
| 4 |
日付順に 並び変え 詳細16-8 |
Selection.SortSpecial SortMethod:=_ xlSyllabary, Key1:=Range("B2"), _ Order1:=xlDescending,以下略 |
OK |
日付はExcelのシリアル値で 並び変えており問題は起 きない |
| 5 |
日数計算 詳細16-7 |
(Now - Cells(c, 2)) / 365.25 本例は日数を年齢にしたケース |
OK |
日付はExcelのシリアル値で 計算しており問題は起きない (Cells(c, 2)は日付形式) |
| 6 |
日付の比較 詳細16-9 |
hiz = DateValue("99/12/31") If Cells(i, 2) - hiz > 0 Then Cells(i, 3) = 1 End If |
OK |
日付比較はExcelのシリアル 値でおこなっており問題は 起きない (Cells(i, 2)は日付形式) |
| 7 |
オートフィルター による抽出 詳細16-10 |
dat = "1/1" Range("a1").Select Selection.AutoFilter Field:="2", Criteria1:=dat |
1/1→ OK 01/01→ダメ |
月/日のみを指定して抽出の 場合は1900年代・2000年代は 関係なく月/日が一致を抽出 |
| dat = "21/1/1" Range("a1").Select Selection.AutoFilter Field:="2", Criteria1:=dat |
21/1/1→ダメ 21/01/0→OK 4桁年で抽出 出来ない |
マクロ実行で通常は実害は 無いと思われるが、本例では 1921年と2021年を対象に 抽出 | ||
| 8 |
AdvancedFilter による抽出 詳細16-11 |
Cells(2, 5) = CDate("99/12/31") Range("A1:B5").AdvancedFilter Action:=_ xlFilterCopy,CriteriaRange:=Range("E1:E2"), _ CopyToRange:=Range("E5:F6") |
OK |
日付はExcelのシリアル値で 抽出しており問題は起きない なお、セットData(例Cells(2, 5)) は日付型にすること |
| 9 |
日付の置換え 詳細16-13 |
ymd1 = #2000/01/11# ymd2 = #2000/01/12# Cells.Replace What:=ymd1, _ Replacement:=ymd2, LookAt:= 以下略 |
OK |
日付はExcelのシリアル値で 抽出し、指定した日付に置き 換えており問題は無し |
| 10 |
ピポットテーブル で日付集計 詳細16-14 |
略−− .AddFields RowFields:="日付", _ ColumnFields:="製品" 略−− .PivotFields("数量").Orientation 略 |
OK |
日付はExcelのシリアル値で まとめており問題は無し |
| 11 |
Findメソッド による抽出 詳細16-19 |
hiz = "2000/01/11" On Error Resume Next Range("B1:B8").Find(hiz, , , xlWhole, _ xlByColumns, xlNext, False).Activate以下略 |
OK |
日付はExcelのシリアル値で 抽出しており問題は無し ※日付を抽出するのであれ ばキーワードも日付型が良い |
| 12 |
セルへ2桁年 書き込み 詳細16-17 |
Cells(11, 1) = DateValue("01/01/00") | (2000/1/1) | 日の無い数字は(MM/dd/yy) |
| Cells(12, 1) = DateValue("00/01/01") | (2000/1/1) | 00は2000年 | ||
| Cells(13, 1) = DateValue("01/01/31") | (2001/1/31) | |||
| Cells(14, 1) = DateValue("01/01/32") | (2032/1/1) | 日の無い数字は(MM/dd/yy) | ||
| Cells(15, 1) = DateValue("02/01/01") | (2002/1/1) | |||
| Cells(16, 1) = DateValue("12/01/01") | (2012/1/1) | |||
| Cells(17, 1) = DateValue("29/01/01") | (2029/1/1) | 29は2029年 | ||
| Cells(18, 1) = DateValue("30/01/01") | (1930/1/1) | 30は1930年 | ||
| Cells(19, 1) = DateValue("99/01/01") | (1999/1/1) | |||
| 13 |
(参考) Excelでセルへ 2桁年入力 (参考16-2) |
セルへ(65/01/01)を入力 | 1965/1/1 | 昭和40年1月1日 |
| セルへ(99/12/31)を入力 | 1999/12/31 | 平成11年12月31日 | ||
| セルへ(00/01/01)を入力 | 2000/1/1 | 平成12年1月1日 | ||
| セルへ(01/01/07)を入力 | 1989/1/7 | 昭和64年1月7日 | ||
| セルへ(01/01/08)を入力 | 1989/1/8 | 平成1年1月8日 | ||
| セルへ(20/12/31)を入力 | 2008/1/1 | 平成20年12月31日 | ||
| セルへ(21/01/01)を入力 | 1946/1/1 | 昭和21年1月1日 | ||
| セルへ(64/12/31)を入力 | 1989/12/31 | 昭和64年1月1日 |
| 2桁の年入力(Excel2000) 00〜29 → 2000〜2029 30〜99 → 1930〜1999 H12.1.1 → 平成12年1月1日 和暦は、M(明治)、T(大正)、S(昭和) H(平成)を年数の前に付ける |
2桁の年入力(Excel95・97) 00 → 2000 01 → 昭和64年 02 → 平成2年 20 → 平成20年 21 → 昭和21年 64 → 昭和64年 65〜99 → 1965〜1999 |